이 프로젝트는 노출 제한 페널티 상태(응답률 50% 미만 & 미응답 3회 초과) 입니다.
프로젝트 시작 동기
프로덕션 레벨의 IT 서비스의 경우 데이터베이스 스키마가 복잡합니다.
수백 개의 데이터베이스, 수천 개의 테이블, 어 다르고 아 다른 칼럼 명, NoSQL과의 연동까지. 비즈니스 요구사항에 충족하기 위해서
복잡한 데이터 스키마 설계를 해야 하지만, 훌륭한 개발자들은 설계해냅니다.
하지만 비 개발 직군에서도 데이터 분석의 필요성이 높아짐에 따라,
그 복잡한 데이터베이스 스키마 이해력이 최근엔 비개발자 분들에게도 요구됩니다.
물론 그분들에게 DBA 지식을 익히라 할 수 있지만, 그 보다는 자신의 본래 업무 (데이터를 뽑아서 시각화 하고 분석하는 작업)에
집중하도록 하는 것이 효율적일 것입니다.
따라서 저는 데이터베이스의 설계와 데이터 활용에 있어서, 개발자와 비개발자(기획자, 마케터 등)가
서로 소통을 하고 쉽게 협업을 할 수 있는 툴, DBair를 만들고자 합니다.
DBair의 주요 기능
1. 수십 수백 개의 데이터베이스와 테이블을 폴더구조로 정리해두고 각 폴더에 markdown이 지원되는 description을 작성해두어서,
비개발자가 해당 테이블이 어떤 정보를 담고 있는 상황인지 바로 파악할 수 있습니다.
2. 마케터나 기획자가 데이터를 분석하고자 할 때 (ex. "할인 이벤트 번호 22-0135의 배너를 클릭해서 들어온 유저가 상품을 결제했다가 환불했을 때, 결제-환불까지 몇 시간이 걸렸는지 분석해보자") 분석에 필요한 정보 (할인 이벤트 정보, 유저의 배너 클릭 로그, 결제 datetime, 환불 datetime 등)을 어떤 데이터베이스의 어떤 테이블의 어떤 칼럼에서 뽑아와야 하는지
빠르고 명확하게 찾아낼 수 있도록 서치 테이블을 제공합니다.
3. 어떤 객체 (데이터베이스든, 테이블이든 칼럼이든)에 GUI로 마우스 호버했을 때, 간략한 메타 정보를 바로 마우스 옆에서 display 해줍니다. (용량, 생성일시, 데이터의 average, 분산도, Null 비율 등)
4. 웹에서 SQL을 작성하여 돌려서 결과를 확인합니다.
5. 결과 정보를 쉽게 차트화 할 수 있습니다. (tableau의 기능)
6. 차트에다가 설명을 붙여가며 분석한 것을 기록합니다. (jupyter notebook 형식으로 차트와 디스크립션을 작성)
7. 자신이 만들어낸 분석 기록을 동료와 공유할 수 있습니다.
8. 타 동료가 그 분석 기록을 fork (github의 기능)하여 분석을 수정 및 변형 및 개선 할 수 있습니다.
예상하는 기술 스택
1. 리액트 및 그 주변 라이브러리 : 웹 페이지 상에서 툴을 이용할 수 있도록 합니다.
2. NginX + ASGI + fastAPI : 유저 인증 기능과 분석 기록을 저장 및 공유할 수 있도록 하기 위함입니다. ASGI를 사용하는 이유는, 데이터베이스 쿼리를 실행함으로써 발생하는 IO가 빈번하기 때문입니다.
3. 차트 라이브러리 : SELECT 해온 데이터를 간편하게 시각화 할 수 있는 기능을 제공해야 합니다.
4. web editor 라이브러리 : 비개발자가 분석 결과에 markdown으로 설명을 작성할 수 있는 기능을 제공해야 합니다.
5. AWS, google cloud platform : 클라우드 상에서 호스팅하고, 유저들이 작성하는 sql 스크립트와 분석 결과 노트를
S3에 저장합니다.
활용하고자 하는 오픈 소스
https://github.com/schemaspy/schemaspy
https://github.com/datahub-project/datahub
https://github.com/apache/superset
모집 팀원
1. 기본적인 기술력은 뒷받침 되어 있고, 다음 질문에 나름대로 해답을 가지고 계신 프론트 개발자, 백엔드 개발자, 데이터 엔지니어, DBA 등등..
1-1. 유저가 " SELECT * FROM order limit 10000000" 쿼리를 수행하여 데이터를 가져오려고 할 때, 로직 플로우를 설계 해야 좋을까요?
1-2. fastAPI 서버에 쿼리를 보내고, 거기서 클라이언트 데이터베이스에 접근하여 쿼리를 수행한 후 결과를 받아와서, 다시 프론트로 쏴줄까요? 아니면 웹 javascript에서 바로 데이터베이스에 접근하여 결과를 받아올까요?
1-3. 어디서 하던, 10000000개의 row 데이터는 다루기에 엄청 많습니다. 유저가 요청한 결과를 가볍고 효율적으로 다룰 수 있는 전략은 뭐가 있을까요?
1-4. 유저가 복잡한 쿼리문을 작성하여 성공적으로 원하는 데이터들을 얻었습니다. 유저가 굉장히 뿌듯해하네요. 동료 마케터들이 쿼리문 좀 공유해달라고 아우성칩니다. 이 때, 쿼리문 관리를 어떻게 해주어야 하며 어떻게 구현을 해야 할까요?
1-5. 마케터가 분석 결과를 동료 마케터들에게 공유하여 이것저것 커스터마이징 되기 시작합니다. 우리가 코드를 형상관리 하는 것처럼, 이 분석 결과 문서도 형상 관리를 할 수 있는 기능을 구현할 수 있나요?
1-6. 데이터가 테이블 형태로 있을 때, 유저가 GUI로 그것을 차트화할 수 있는 인터페이스를 구현할 수 있나요?
2. 일주일에 오프라인 회의 1회, 화상 회의 2회 가능하신 분
3. 책임감 있게 프로젝트를 수행해 가실 분.
직장인이시라면, 직장 업무와 겸하면서 사이드 프로젝트를 충분히 할 수 있을지 고민해주세요.
예비 개발자 분이시라면, 자신이 해당 기능을 구현할 수 있을지 사전 조사를 충분히 해주세요.
향후 계획
1. 성공적으로 프로그램이 만들어진다면, 국내 스타트업들에게 배포할 것입니다.
2. 서울 혁신 챌린지(shorturl.at/eruv7) 접수할 것입니다.
기획서가 통과되면 시제품 제작 비용 2000만원이 지원되고, 발표평가가 통과되면 사업화 자금 1억원이 지원됩니다.
Contact
1. 참가 신청을 위해 "렛플 지원하기"를 이용하세요.
2. 궁금한 점이 있으시면 여기 들어오셔서 물어보실 수 있습니다. https://open.kakao.com/o/sskmc6xe
#Typescript
#React
#Python
#FastAPI
#sql
#nosql
#AWS
이 프로젝트는 지원을 기다리는 중😁
프로젝트 지원하기